<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use app\admin\model\User as UserModel;
use think\Session;

class User extends Controller
{
    // 初始化 防止用户未登录就访问页面
    public function _initialize()
    {
        if (!session('nodeList')) {
            return $this->error('您还未登录,请登录',url('admin/index/index'));
        }
    }
    /**
     * 后台用户列表
     * @return \think\response\View
     */
    public function index()
    {
        $auth = request()->controller().request()->action();
        $this->judge($auth);

        $data = Db::name('user')->paginate(10);
//        halt($data);
        return view('admin@user/index',['data' => $data]);
    }


    /**
     * 后台用户添加
     * @return \think\response\View
     */
    public function create()
    {
        $auth = request()->controller().request()->action();
        $this->judge($auth);

        return view('admin@user/create');
    }


    /**
     * 后台用户添加处理
     */
    public function save()
    {

        // 接收添加用户表单传过来的数据
        $user = input('post.');
//        var_dump($user);

        // 验证数据库是否存在
        $validationTel = Db::name('user')->where('tel', 'eq', $user['tel'])->select();
        $validationEmail = Db::name('user')->where('email', 'eq', $user['email'])->select();

        if (!empty($validationTel)){
            return $this->error('您的用户名(手机号)已经有人占用了,请换一个吧!!!');
        }
        if (!empty($validationEmail)){
            return $this->error('这个邮箱已经有人用了,换一个吧!!!');
        }

        // 验证器验证数据
        $check = $this->validate($user, 'admin/User');
        if (true !== $check) {
            $this->error($check);
            return;
        }

        // 模型处理
        $ModelUser = new UserModel($user);

        // 将密码使用盐值加密
        $user['password'] = $ModelUser->setPass(input('post.password'));
        // 设置用户唯一凭证
        $user['voucher'] = $ModelUser->setVoucher();

        // 删除数组多余元素
        unset($user['repassword']);

//        var_dump($user);

        // 添加数据库并获取自增ID
        $result = Db::name('user')->insertGetId($user);

        // 判断是否添加成功
        if ($result > 0){
            Db::name('user_info')->data('uid',$result)->insert();
            return $this->success('添加成功!', url('admin/user/index'));
        }else{
            return $this->error('添加失败!');
        }
    }


    /**
     * 后台用户详情
     * @return \think\response\View
     */
    public function read($id)
    {
        $auth = request()->controller().request()->action();
        $this->judge($auth);

//        halt(1);
        $userInfo = Db::name('user_info')->where('uid='.$id)->select();

        return view('admin@user/read',['data' => $userInfo]);
    }

    /*
     * 判断权限
     */
    public function judge($auth)
    {
        $nodeList = Session::get('nodeList');
        if (empty($nodeList)) {
            return $this->error('您的权限不足!');
        }
        if (!in_array($auth,$nodeList)) {
            return $this->error('您的权限不足!');
        }
    }
}
